package com.bryant.miantong

import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat
import androidx.viewpager2.widget.ViewPager2
import com.bryant.bryant_weather.ViewPagerAdapter

class MainActivity : AppCompatActivity() {
    private var viewPager: ViewPager2? = null
    private var adapter: ViewPagerAdapter? = null
    private var currentPosition = 0
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        enableEdgeToEdge()
        setContentView(R.layout.ac_main)

        // 1. 添加点击事件 - 底部tab切换
        addClickEvent()
        // 3. 恢复状态
        if(savedInstanceState != null){
            currentPosition = savedInstanceState.getInt("currentPosition", 0)
        }

        // 2. 加载Fragment
        loadFragment()
        // 4. 恢复选中项
        viewPager?.currentItem = currentPosition

    }

    private fun addClickEvent() {
        // 1. 获取相关控件
        val bottomNavigationView = findViewById<ViewGroup>(R.id.llBottomNavigation)
        val homeContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_home)
        val projectContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_project)
        val interviewContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_interview)
        val profileContainer = bottomNavigationView.findViewById<ViewGroup>(R.id.nav_profile)

        // 2. 首页点击事件
        homeContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                // 实现页面跳转(通过viewPager)
                // 更新底部导航栏选中项
                viewPager?.currentItem = 0
                setCurrentTab(0)
            }

        })
        // 3. 项目点击事件
        projectContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                // 实现页面跳转(通过viewPager)
                // 更新底部导航栏选中项
                viewPager?.currentItem = 1
                setCurrentTab(1)
            }
        })
        // 4. 面试点击事件
        interviewContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                // 实现页面跳转(通过viewPager)
                // 更新底部导航栏选中项
                viewPager?.currentItem = 2
                setCurrentTab(2)
            }

        })
        // 5. 我的点击事件
        profileContainer.setOnClickListener(object : View.OnClickListener {
            override fun onClick(v: View?) {
                // 实现页面跳转(通过viewPager)
                // 更新底部导航栏选中项
                viewPager?.currentItem = 3
                setCurrentTab(3)
            }
        })
    }

    // 设置选中项样式变化
/*//    private fun setCurrentTab(index: Int) {
//        // 获取底部导航栏
//        val bottomNavigationView = findViewById<ViewGroup>(R.id.llBottomNavigation)
//
//        // 1. 获取首页tab栏控件
//        val tvHome = bottomNavigationView.findViewById<TextView>(R.id.tv_home)
//        var imageHome = bottomNavigationView.findViewById<ImageView>(R.id.img_home)
//
//        // 2. 获取项目tab栏控件
//        val tvProject = bottomNavigationView.findViewById<TextView>(R.id.tv_project)
//        var imageProject = bottomNavigationView.findViewById<ImageView>(R.id.img_project)
//
//        // 3. 获取面试tab栏控件
//        val tvInterview = bottomNavigationView.findViewById<TextView>(R.id.tv_interview)
//        var imageInterview = bottomNavigationView.findViewById<ImageView>(R.id.img_interview)
//
//        // 4. 获取我的tab栏控件
//        val tvProfile = bottomNavigationView.findViewById<TextView>(R.id.tv_profile)
//        var imageProfile = bottomNavigationView.findViewById<ImageView>(R.id.img_profile)
//
//        // 5. 根据index设置选中项样式
//        when (index) {
//            0 -> {
//                // 设置首页选中项样式
//                tvHome.setTextColor(resources.getColor(R.color.black,null))
//                imageHome.setImageResource(R.mipmap.tabbar_home_fill)
//                imageHome.setColorFilter(resources.getColor(R.color.black, null))
//
//
//                // 设置导航栏其他未选中项样式
//                tvProject.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProject.setImageResource(R.mipmap.tabbar_project)
//                tvInterview.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageInterview.setImageResource(R.mipmap.tabbar_interview)
//                tvProfile.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProfile.setImageResource(R.mipmap.tabbar_mine)
//            }
//            1 -> {
//                // 设置项目选中项样式
//                tvProject.setTextColor(resources.getColor(R.color.black,null))
//                imageProject.setImageResource(R.mipmap.tabbar_project_fill)
//                imageProject.setColorFilter(resources.getColor(R.color.black, null))
//                // 设置导航栏其他未选中项样式
//                tvHome.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageHome.setImageResource(R.mipmap.tabbar_home)
//                tvInterview.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageInterview.setImageResource(R.mipmap.tabbar_interview)
//                tvProfile.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProfile.setImageResource(R.mipmap.tabbar_mine)
//
//            }
//            2 -> {
//                //  设置面试选中项样式
//                tvInterview.setTextColor(resources.getColor(R.color.black,null))
//                imageInterview.setImageResource(R.mipmap.tabbar_interview_fill)
//                imageInterview.setColorFilter(resources.getColor(R.color.black, null))
//                //  设置导航栏其他未选中项样式
//                tvHome.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageHome.setImageResource(R.mipmap.tabbar_home)
//                tvProject.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProject.setImageResource(R.mipmap.tabbar_project)
//                tvProfile.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProfile.setImageResource(R.mipmap.tabbar_mine)
//            }
//            3 -> {
//                // 设置我的选中项样式
//                tvProfile.setTextColor(resources.getColor(R.color.black,null))
//                imageProfile.setImageResource(R.mipmap.tabbar_mine_fill)
//                imageProfile.setColorFilter(resources.getColor(R.color.black, null))
//                // 设置导航栏其他未选中项样式
//                tvHome.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageHome.setImageResource(R.mipmap.tabbar_home)
//                tvProject.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageProject.setImageResource(R.mipmap.tabbar_project)
//                tvInterview.setTextColor(resources.getColor(R.color.default_gray,null))
//                imageInterview.setImageResource(R.mipmap.tabbar_interview)
//            }
//
//        }
//    }*/

    private fun setCurrentTab(index: Int) {
    // 获取底部导航栏
    val bottomNavigationView = findViewById<ViewGroup>(R.id.llBottomNavigation)

    // 定义所有tab的配置数据
    val tabs = listOf(
        TabConfig(
            textView = bottomNavigationView.findViewById(R.id.tv_home),
            imageView = bottomNavigationView.findViewById(R.id.img_home),
            selectedTextRes = R.color.black,
            unselectedTextRes = R.color.default_gray,
            selectedIconRes = R.mipmap.tabbar_home_fill,
            unselectedIconRes = R.mipmap.tabbar_home
        ),
        TabConfig(
            textView = bottomNavigationView.findViewById(R.id.tv_project),
            imageView = bottomNavigationView.findViewById(R.id.img_project),
            selectedTextRes = R.color.black,
            unselectedTextRes = R.color.default_gray,
            selectedIconRes = R.mipmap.tabbar_project_fill,
            unselectedIconRes = R.mipmap.tabbar_project
        ),
        TabConfig(
            textView = bottomNavigationView.findViewById(R.id.tv_interview),
            imageView = bottomNavigationView.findViewById(R.id.img_interview),
            selectedTextRes = R.color.black,
            unselectedTextRes = R.color.default_gray,
            selectedIconRes = R.mipmap.tabbar_interview_fill,
            unselectedIconRes = R.mipmap.tabbar_interview
        ),
        TabConfig(
            textView = bottomNavigationView.findViewById(R.id.tv_profile),
            imageView = bottomNavigationView.findViewById(R.id.img_profile),
            selectedTextRes = R.color.black,
            unselectedTextRes = R.color.default_gray,
            selectedIconRes = R.mipmap.tabbar_mine_fill,
            unselectedIconRes = R.mipmap.tabbar_mine
        )
    )

    // 更新所有tab状态
    tabs.forEachIndexed { i, tab ->
        if (i == index) {
            // 选中状态
            tab.textView.setTextColor(resources.getColor(tab.selectedTextRes, null))
            tab.imageView.setImageResource(tab.selectedIconRes)
            tab.imageView.setColorFilter(resources.getColor(tab.selectedTextRes, null))
        } else {
            // 未选中状态
            tab.textView.setTextColor(resources.getColor(tab.unselectedTextRes, null))
            tab.imageView.setImageResource(tab.unselectedIconRes)
            tab.imageView.setColorFilter(resources.getColor(R.color.default_gray, null)) // 添加这行来设置未选中图标的颜色
        }
    }
}


    // 辅助数据类
    data class TabConfig(
        val textView: TextView,
        val imageView: ImageView,
        val selectedTextRes: Int,
        val unselectedTextRes: Int,
        val selectedIconRes: Int,
        val unselectedIconRes: Int
    )

    // 加载Fragment
    fun loadFragment(){
        // 1. 滑动控件处理
        if(viewPager == null){
            viewPager = findViewById(R.id.vpMain) // 初始化

            // 禁止页面滑动
            viewPager?.isUserInputEnabled = false

            // 注册页面切换监听
            viewPager?.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
                override fun onPageSelected(position: Int) {
                    super.onPageSelected(position)

                    setCurrentTab(position)
                    currentPosition =  position
                }
            })
        }

        // 2. 初始化适配器
        if(adapter == null){
            adapter = ViewPagerAdapter(this)
        }

        viewPager?.adapter = adapter
        viewPager?.offscreenPageLimit = 3 // 缓存4个页面
    }
}